package com.qqclient.service;

import com.loy.entity.Message;
import com.loy.entity.MessageType;

import java.io.*;
import java.util.stream.Collectors;
/**
 * 1. 该类完成文件的传输
 */
public class FileClientService {

    /**
     *
     * @param src  源文件
     * @param dest 把文件保存到对方的哪个目录
     * @param senderId 发送者
     * @param getterId 接收者
     */
    public void sendFileToOne(String src,String dest,String senderId,String getterId){
        // 1.读取src文件到字节数组中，然后将该文件的字节数组封装到message中
        Message message = new Message();
        message.setMesType(MessageType.MESSAGE_FILE_MES);
        message.setSender(senderId);
        message.setGetter(getterId);
        message.setSrc(src);
        message.setDest(dest);
        // 2.读取文件
        // 2.1 先创建文件输入流
        FileInputStream fileInputStream=null;
        byte[] fileBytes = new byte[(int) new File(src).length()];
        try {
            fileInputStream = new FileInputStream(src);
            // 将 src路径文件读取到字节数组中
            fileInputStream.read(fileBytes);
            // 将文件字节数组封装到 message中
            message.setFileBytes(fileBytes);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            if(fileInputStream!=null){
                try {
                    fileInputStream.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
        System.out.println("\n" + senderId+"给"+getterId
                +"发送文件"+src+"到对方的目录："+dest);
        // 将message 发送到 服务器
        try {
            ObjectOutputStream oos = new ObjectOutputStream(ManageClientConnectServerThread.getClientConnectServerThread(senderId).getSocket().getOutputStream());
            oos.writeObject(message);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
